package com.projles.release1;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.projles.util.Jogador;
import com.projles.util.Player;

public class CadastroActivity extends Activity implements OnClickListener {

	
	private Button btIniciarHome;
	private Button btAddOutro;
	private EditText campoJogador;
	private View layoutAnimar;
	private TextView textFieldJogador;
	private boolean erro;
	
	private Player player;
	
	private List<Jogador> jogadores = new ArrayList<Jogador>();
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cadastro);
        
        layoutAnimar = findViewById(R.id.layout_cadastro);
        
        textFieldJogador = (TextView) findViewById(R.id.txt_jogador_cadastro);
        textFieldJogador.setText("Jogador 1:");
        
        player = Player.getPlayer(this);
        
        campoJogador = (EditText) findViewById(R.id.campo_jogador);

        campoJogador.setOnKeyListener(new OnKeyListener() {
        	@Override
        	public boolean onKey(View v, int keyCode, KeyEvent event) {
                // O usuario apertar Enter no nosso EditText
                if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {

                	if (campoJogador.getText().length() == 0) {
                		return false;
                	}
                	
                	esconderTeclado();
                	return true;
                }
                return false;
        	}
    	});
        
        btIniciarHome = (Button) findViewById(R.id.bt_inicia_home);
        btIniciarHome.setOnClickListener(this);
        
        btAddOutro = (Button) findViewById(R.id.bt_add_outro_jogador);
        btAddOutro.setOnClickListener(this);
               
    }
    
    @Override
    protected void onStart() {
    	super.onStart();
    	
    	campoJogador.setText("");

    	if (!erro) {
    		textFieldJogador = (TextView) findViewById(R.id.txt_jogador_cadastro);
    		textFieldJogador.setText("Jogador "+ (jogadores.size()+1) +":");
    		
    		animarEntradaView();
    	}
    }
    
    @Override
    public void onClick(View v) {
    	
    	player.click();
    	
	    switch (v.getId()) {
	    
		case R.id.bt_inicia_home:
			iniciarAplicativo();
			break;

		case R.id.bt_add_outro_jogador:
			addUmJogador();
			onStart();
			break;
			
		default:
			break;
			
		}	
    }
    
    private void iniciarAplicativo() {
    	addUmJogador();
    	iniciaHome();
	}

	private void addUmJogador() {
		String nomeJog = campoJogador.getText().toString();

		
		for (Jogador j: jogadores) {
			if (j.getNome().equals(nomeJog)) {
				erro = true;
				toast("Os nomes devem ser distintos!");
				return;
			}
		}
		
    	if (nomeJog.equals("") && jogadores.size() == 0) {
    		erro = true;
			toast("Insira 1 jogador pelo menos!");
		} else {
			erro = false;
			
			if (!nomeJog.trim().equals("")) {
				jogadores.add(new Jogador(nomeJog, null));
			}
		}
	}
	
	private void iniciaHome() {
		
		if (!erro) {
			
			Intent i = new Intent(CadastroActivity.this, HomeActivity.class);
			i.putExtra("jogadores", (Serializable) jogadores);
			
			jogadores = new ArrayList<Jogador>();    // limpando a lista para o caso do usr voltar a tela de cadastro
			startActivity(i);
    	}
	}
    
    private void toast(String texto) {
    	Toast.makeText(this, texto, Toast.LENGTH_SHORT).show();
    }
    
    private void esconderTeclado() {
		InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
		imm.hideSoftInputFromWindow(campoJogador.getWindowToken(), 0);
	}
    
    private void animarEntradaView() {
    	Animation in = AnimationUtils.makeInChildBottomAnimation(this);
    	layoutAnimar.startAnimation(in);
    	layoutAnimar.setVisibility(View.VISIBLE);
	}

}


